package com.sky.demo;

import java.util.ArrayList;
import java.util.List;

/**
 * @author : wushikai
 * <p>
 * date : 2020-11-26
 */
public class Main {



    /**
     *
     * A --> C  ;  B-->C  ;    B == C ??? 当然是不能; 但是编译器是不会提醒报错的;
     * */
    public  static void testExtend ( ){

        Apple[] apples = new Apple[1];
        Fruit[] fruits = apples;
        fruits[0] = new Strawberry();


    }

    public  static void testExtend1 ( ){

        List<Apple> apples = new ArrayList<Apple>();
        List<? extends Fruit> fruits = apples;
        //在编译阶段直接提示报错
        //fruits.add(new Strawberry());
    }





    public static void testSupper(){


        List<Fruit> fruits = new ArrayList<Fruit>();
        List<? super Apple> superApple= fruits;
        superApple.add(new Apple());
        //只允许第一层继承对象 作为参数, 不允许 爷爷辈或者以上的类 对象 作为参数
        // superApple.add(new Object());



    }


    public static void main(String[] args){

        testExtend();
    }




}
